#pragma once
#ifndef _GAME_CORE_
#define _GAME_CORE_

#include "../../ExEngine/math/math.h"
#include "../../ExEngine/math/vector.h"
#include "../../ExEngine/common/def.h"
#include "../../ExEngine/common/types.h"

#include "../entities/level.h"
#include "../entities/player.h"

extern const bool game_DebugLevel;

namespace Game
{
	enum PlayMode {
		SIDE_SCROLL = 0,
		CHASE = 1,
		TRANSITION = 2,
		FREE_FLY = 3
	};
	
	extern Vector3f g_TransitionCameraAnchor;
	extern Vector3f g_TransitionCameraTarget;

	extern PlayMode g_GamePlayMode;
	extern CLevel* g_CurrentLevel;
	extern CPlayer* g_Player;
	extern Vector3f g_Checkpoint;

	HRESULT Shutdown();
	void CameraMovement(Matrix4f* pTransform);

	HRESULT Update(const float dt);
	HRESULT Initalize();
}

#endif